export const dependenciesTests = [
  {
    description: 'dependencies',
    schema: {
      dependencies: { bar: ['foo'] }
    },
    tests: [
      {
        description: 'neither',
        data: {},
        valid: true
      },
      {
        description: 'nondependant',
        data: { foo: 1 },
        valid: true
      },
      {
        description: 'with dependency',
        data: { foo: 1, bar: 2 },
        valid: true
      },
      {
        description: 'missing dependency',
        data: { bar: 2 },
        valid: false
      },
      {
        description: 'ignores non-objects',
        data: 'foo',
        valid: true
      }
    ]
  },
  {
    description: 'multiple dependencies',
    schema: {
      dependencies: { quux: ['foo', 'bar'] }
    },
    tests: [
      {
        description: 'neither',
        data: {},
        valid: true
      },
      {
        description: 'nondependants',
        data: { foo: 1, bar: 2 },
        valid: true
      },
      {
        description: 'with dependencies',
        data: { foo: 1, bar: 2, quux: 3 },
        valid: true
      },
      {
        description: 'missing dependency',
        data: { foo: 1, quux: 2 },
        valid: false
      },
      {
        description: 'missing other dependency',
        data: { bar: 1, quux: 2 },
        valid: false
      },
      {
        description: 'missing both dependencies',
        data: { quux: 1 },
        valid: false
      }
    ]
  },
  {
    description: 'multiple dependencies subschema',
    schema: {
      dependencies: {
        bar: {
          properties: {
            foo: { type: 'integer' },
            bar: { type: 'integer' }
          }
        }
      }
    },
    tests: [
      {
        description: 'valid',
        data: { foo: 1, bar: 2 },
        valid: true
      },
      {
        description: 'no dependency',
        data: { foo: 'quux' },
        valid: true
      },
      {
        description: 'wrong type',
        data: { foo: 'quux', bar: 2 },
        valid: false
      },
      {
        description: 'wrong type other',
        data: { foo: 2, bar: 'quux' },
        valid: false
      },
      {
        description: 'wrong type both',
        data: { foo: 'quux', bar: 'quux' },
        valid: false
      }
    ]
  }
]
